Monkey

Think! And Think Again


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 站点地图

  • 公益404

  • 搜索

未命名

发表于 2017-05-04 |

导出:
docker save admin/mongodb > /tmp/mongodb.tar

导入:
docker load < /tmp/mongodb.tar

未命名

发表于 2017-04-27 |

docker run -p 20701:20701 woailuoli993/jblse

未命名

发表于 2017-04-27 |

nginx负载zabbix_api为grafana加速

grafana 调用zabbix的api 时顺序的,可以前面架个nginx把请求变为并行的

nginx 配置:

[root@SBB-HX-F4-IPTV-Server-Zabbix01 ~]# cat /etc/nginx/conf.d/zabbix_upstream.conf
upstream api.z.hb.rhel.cc {
server 127.0.0.1:81 max_fails=3 fail_timeout=3s weight=9;
server 127.0.0.1:82 max_fails=3 fail_timeout=3s weight=9;
server 127.0.0.1:83 max_fails=3 fail_timeout=3s weight=9;
server 127.0.0.1:84 max_fails=3 fail_timeout=3s weight=9;
server 127.0.0.1:85 max_fails=3 fail_timeout=3s weight=9;
server 127.0.0.1:86 max_fails=3 fail_timeout=3s weight=9;
server 127.0.0.1:87 max_fails=3 fail_timeout=3s weight=9;
server 127.0.0.1:88 max_fails=3 fail_timeout=3s weight=9;
server 127.0.0.1:89 max_fails=3 fail_timeout=3s weight=9;
}

server{
listen 8081;
server_name api.z.hb.rhel.cc;
location / {
proxy_pass http://api.z.hb.rhel.cc;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

server {
listen 81;
listen 82;
listen 83;
listen 84;
listen 85;
listen 86;
listen 87;
listen 88;
listen 89;

location /zabbix { 
alias /usr/share/zabbix;
index index.php index.php ; 

}
location ~ .php$ { include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/$fastcgi_script_name;
fastcgi_connect_timeout 600;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;
fastcgi_buffer_size 256k;
fastcgi_buffers 16 256k;
fastcgi_busy_buffers_size 512k;
fastcgi_temp_file_write_size 512k;
}
}

未命名

发表于 2017-04-27 |

$ sudo yum install initscripts fontconfig
yum install fontconfig
yum install freetype*
yum install urw-fonts

$ sudo rpm -Uvh grafana-4.1.2-1486989747.x86_64.rpm

/etc/init.d/grafana-server start

mkdir -p /var/lib/grafana/plugins
chown -R grafana:grafana /var/lib/grafana/plugins
tar xf /tmp/alexanderzobnin-zabbix-app.tar.gz -C /var/lib/grafana/plugins

/etc/init.d/grafana-server restart

未命名

发表于 2017-04-12 |
  1. ss服务端设置
    端口:8301
    密码:XXX.password

/usr/bin/python /usr/bin/ssserver -c /etc/shadowsocks.json -d start
[root@li1604-128 ~]# cat /etc/shadowsocks.json
{
“server”:”0.0.0.0”,
“local_address”:”127.0.0.1”,
“local_port”:10800,
“port_password”:{
“8301”:”XXX.password”
},

"timeout":300,
"method":"aes-256-cfb",
"fast_open": false

}

#kcp server 与 客户端下载地址:
http://onayasfq5.bkt.clouddn.com/kcptun-linux-amd64-20170322.tar.gz

  1. kcptun 服务端设置
    nohup ./server_linux_amd64 -l :29900 -t 127.0.0.1:8301 -key XXX.password -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2 > kcptun.log 2>&1 &

kcptun version 20170322
kcptun 加速端口:29900
默认:启用压缩

  1. kcp client设置
    ./client_linux_amd64 -r “139.162.120.128:29900” -l “:8301” -key XXX.password -mode fast2

Application -> KCP Client(8301/tcp) -> KCP Server(29900/udp) -> Server(8301/tcp)

  1. ss 客户端设置

vi shadowsocks.json
{
“server”:”127.0.0.1”,
“server_port”:8301,
“local_port”:8080,
“password”:”XXX.password”,
“timeout”:600,
“method”:”aes-256-cfb”
}

sslocal -c shadowsocks.json

  1. 使用cow 做http代理
    cow 下载地址:https://github.com/cyfdecyf/cow/releases

mkdir -p ~/.cow
vi ~/.cow/rc

listen = http://127.0.0.1:7777
proxy = ss://aes-256-cfb:XXX.password@127.0.0.1:8301

###########

启用cow
cow-linux64-0.9.8 ./data
2017/03/29 16:08:54 COW 0.9.8 listen http 127.0.0.1:7777, PAC url http://127.0.0.1:7777/pac

这时 在浏览器中 设置使用http代理 端口 7777即可

——-kcptun server不稳定 定时重启解决

cp server_linux_amd64 /usr/bin/kcptun

vi /usr/lib/systemd/system/kcptun.service
[Unit]
Description=udp tunnel based on kcp protocol
After=network.target

[Service]
EnvironmentFile=-/etc/default/kcptun
ExecStart=/usr/bin/kcptun $KCPTUN_OPTS
Restart=on-failure

[Install]
WantedBy=multi-user.target

/etc/default/kcptun
KCPTUN_OPTS=”-l :29900 -t 127.0.0.1:8301 -key XXX.password –crypt none -mode fast2”

systemctl reload kcptun

  • /1 systemctl restart kcptun.service

####客户端设置
cp client_linux_amd64 /usr/bin/kcptun

vi /usr/lib/systemd/system/kcptun.service
[Unit]
Description=udp tunnel based on kcp protocol
After=network.target

[Service]
EnvironmentFile=-/etc/default/kcptun
ExecStart=/usr/bin/kcptun $KCPTUN_OPTS
Restart=on-failure

[Install]
WantedBy=multi-user.target

/etc/default/kcptun
KCPTUN_OPTS=”-r 139.162.120.128:29900 -l 0.0.0.0:8301 -key XXX.password –crypt none -mode fast2”

systemctl reload kcptun

  • /1 systemctl restart kcptun.service

未命名

发表于 2017-04-09 |

从GoLang的目前的中文原创/中译本书籍数量来看,GoLang真的太不被关注了,看看Swift都多少本中文书了:
1) Go语言程序设计 // 某牛翻译
2) Go Web编程 // Beego作者原创
3) Go 并发编程实战 // 新书,没看呢,怎么样?
4) Go语言编程 // 某牛原创
5) Go语言云动力 // 新加坡人编写,体会一下异域语言风格,挺有意思
6) 代码的未来(第3.2章Go)// 松本行弘认为GoLang的switch语法借鉴了Ruby


  1. go env
  2. go编译目录
    bin (存放编译生成的可执行文件)
    pkg (存放编译后生成的包文件)
    src (存放项目源码)

  3. go编程基础

go get: 获取远程的包 (需提前安装git)
go run: 直接运行程序
go build: 测试编译,检查是否编译错误
go fmt:编译包文件并编译整个程序
go test:运行测试文件
go doc:查看文档

sudo dnf install golang-godoc
godoc -http=:8080

  1. 编译
    go install
    go build
    go run

go 内置关键字(25均为小写)

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

go 注释方法

  • // 单行注释
  • /**/ 多行注释

只有在main包中可以运行,main函数

可见性规则

  • go语言中,使用大小写来决定 常量、变量、类型、接口、结构和函数 是否可以被外部包所调用:
    根据约定:
    函数名 首字母 小写 即为 private
    函数名字 首字母大写 即为 pubilc

导包与变量定义的简写
const (
PI = 3.14
count = 1
)

var(
name = “gopher”
name1 = “cc”
)
type (

)
import (
fmt
)

变量声明偷懒法,用:代替var关键字
var a = 1 ===> a:=1

循环语句 for:

  • 第一种形式:
    func main() {
    a := 1
    for {
    a++
    if a > 3 {
        break
    }
    
    }
    fmt.Println(a)
    }

  • 第二种形式
    func main(){
    a := 1
    for a <= 3 {
    a++
    
    }
    fmt.Println(a)
    }

  • 第三种形式
    func main() {
    a := 1
    for i := 0; i < 3; i++ {
    a++
    
    }
    fmt.Println(a)
    }

跳转语句 需要和标签配合

break goto continue 是和label标签使用

数组

a := […]int{1, 2, 3, 4, 5}
使用new关键字 创建数组
p := new([10]int)

map 相当于字典

var m map[int]string
m = map[int]string{}
m = make(map[int]string{})

for k,v := range map{
map[k] = i
}

  • defer 相当于 析构

使用 panic和recover 做错误捕捉
panic(“ Panic in B”)
defer func(){
if err := recover(); err != nil{
fmt.Println(“Recover in B”)
}
}

未命名

发表于 2017-04-08 |
  1. 打开浏览器

import webbrowser
webbrowser.open(“http://www.baidu.com“)

  1. 乌龟画圆

import turtle

def draw_square():
window = turtle.Screen()
window.bgcolor(“red”)

brad = turtle.Turtle()
brad.shape("turtle")
brad.color("yellow")
brad.speed(2)

brad.forward(100)
brad.right(90)
brad.forward(100)
brad.right(90)
brad.forward(100)
brad.right(90)
brad.forward(100)
brad.right(90)

window.exitonclick()

draw_square()

pypi 下载排行榜:
http://pypi-ranking.info/alltime

  1. csv 格式

csv = [[‘A1’,’A2’,’A3’],
[‘B1’,’B2’,’B3’]]

csv = [{‘name1’:A1,’name2’:’A2’,’name3’:’A3’},
{‘name1’:’B1’,’name2’:’B2’,’name3’:’A3’}]

enrollments = []
for row in reader:
enrollments.append(row)

—–上面代码可以用下面一句话代替——-
enrollments = list(reader)

from datetime import datetime as dt
dt.strptime(date, ‘%Y-%m-%d’)

未命名

发表于 2017-02-28 |

参考-zabbix 图像显示 Grafana
如何在CentOS 7的Zabbix中安装和配置Grafana绘制漂亮的图表

  1. grafana
  • 下载
    docker run -d –name=grafana-xxl -p 3000:3000 monitoringartist/grafana-xxl:latest
  • 运行:
    docker run -d -v /var/lib/grafana –name grafana-xxl-storage busybox:latest

docker run \
-d \
-p 3000:3000 \
–name grafana-xxl \
–volumes-from grafana-xxl-storage \
monitoringartist/grafana-xxl:latest

  • 添加zabbix监控
  1. 把zabbix enable
  2. Data Source –> Add data source –>

Name zabbix Default 选中
Type zabbix
Url http://xxxxx/zabbix/api_jsonrpc.php
zabbix api details
username Admin
Password zabbix
Trends enable

  • 添加图形
  1. ADD ROW 选 Graph
  2. 左键上标题栏 选择 edite
  3. Metrics(度量) 中 Panel data source(面板数据源)这里选择zabbix
  4. Metrics中
    Group 填入 $group Host 填入 $host
    Application 空 Item 填入 网卡
  5. 如果想把 出和入两个流量合并 可以再选择 Add query添加一栏 或者 右边选项里面选复制
  • 导出vsv 所有图片,选右键 选项这里可以导出到csv
  • 添加报警
  1. 选择一副图 左键上标题栏 选择 edite
  2. 选择Alert name选项 配置名字 Evaluate every(评估时间)60s
  3. 条件 when avg() of (查询A ,5分钟,到现在)
    is above(以上)
    is below(以下)
    IS OUTSIDE RANGE(除此之外)
    IS WITHIN RANGE(在这个范围之内)
    HAS NO VALUE(没有值)

    SET STATE TO 当达到触发条件之后,把状态改为ok 或报警

编辑菜单中各选项

  1. General
    info(信息)
    Title(标题)
    Description(描述)

Dimensions(尺度)
Span(跨度) –》最大为12
Height(高)
Transparent(透明)

Templating(模板)
Repeat Panel(复制面板)
Min span(最小跨度)

  1. Metrics(度量,规律)

  2. Axes(轴,x或y轴)
    Unit (这里设置数据的单位)

  3. Legend(铭文)
    定义汇总信息是在右边还是下面,汇总信息 包括 最大 最小 平均 当前

  4. Display(图形展示)

  5. Series overrides 这里可以设定,把进流量,变到下面显示
  6. Draw modes(画图模式) 这里可以设置图形是 bars条状图 lines折线图 points点图

  7. 添加 override
    alias or regex /Incoming/ Transform: negative-Y (改变为负数在y轴)

  1. Alert(报警)

  2. 时间范围

右上角设置选模板,可以设置变量

$group
$host $group.

$netif .$host.Network interfaces.

说明,选ss的进流量 和 出流量进行对比,ss的进流量是 调度器访问所以比较平均,但是出流是就是有变化的,说明出流量是给客户的

  • 添加饼图
    在添加图形搜索中搜索 pie
  1. Metrics 中添加两个选项 一个是 总磁盘使用情况 另一个是当前磁盘使用情况
  2. 在Options 设置这里 选legend(铭文)
    可以显示 占用百分比等
  • Singlestat 单值 状态面板
    选择 启用Gauge 可以达到 显示汽车仪表盘的功能

  • 添加zabbix 触发器
    图表中选择 Zabbix Triggers
    即可

并且可以对一个触发器 显示通告,询问为什么?

  • 显示当前时间
    clock

  • ajax
    使用ajax 动态的从远程 获取文件内容

可以把连接地址共享,嵌入到一个页面

  • ROW (行)
    最小的排列单元 可以有12个
  • Panel(面板)
    There are currently four Panel types: Graph, Singlestat, Dashlist, Table,and Text.

  • Query Editor(查询编辑器)

  • Dashboard(面板)
    面板可以用 模板、描述、共享、快照 等

  • 支持正则

比如:
/NJ-HX-F4-IPTV-Server-EPG0[1-3]/

做一到3张图

Group /.*/
Item /CPU (system|user) time/

Functions
groupBy(10s, avg)

支持聚合 各自10秒钟的平均值

setAlias(xxx/s)

  • 如果一个区间图点过多,可以减少
    Max data points

  • Histogram 柱状图

  • 把自己做的图 分享出去
    Publish to snapshot.raintank.io

未命名

发表于 2017-02-27 |

mongodb的使用

安装

sudo dnf install mongodb-server.x86_64

启动:
sudo systemctl start mongod

使用

$mongo

默认端口 18087

  • 查看当前操作的数据库
    数据库 切换
    use db

db
test

  • 增
    db.runoob.insert({x:10})
    第一个命令将数字 10 插入到 runoob 集合的 x 字段中。

db.COLLECTION_NAME.insert(document)

  • 删

    db.col.remove({‘title’:’MongoDB 教程’})
    WriteResult({ “nRemoved” : 2 }) # 删除了两条数据
    db.col.find()
    …… # 没有数据

  • 改
    修改多行,要指定 multi=True,否则只是修改匹配到的第一行

update() 方法
update() 方法用于更新已存在的文档。语法格式如下:
db.collection.update(
,
,
{
upsert: ,
multi: ,
writeConcern:
}
)
参数说明:
query : update的查询条件,类似sql update查询内where后面的。
update : update的对象和一些更新的操作符(如$,$inc…)等,也可以理解为sql update查询内set后面的
upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
writeConcern :可选,抛出异常的级别。

db.col.update({‘title’:’MongoDB 教程’},{$set:{‘title’:’MongoDB’}})
save() 方法
db.collection.save(
,
{
writeConcern:
}
)
只更新第一条记录:
db.col.update( { “count” : { $gt : 1 } } , { $set : { “test2” : “OK”} } );
全部更新:
db.col.update( { “count” : { $gt : 3 } } , { $set : { “test2” : “OK”} },false,true );
只添加第一条:
db.col.update( { “count” : { $gt : 4 } } , { $set : { “test5” : “OK”} },true,false );
全部添加加进去:
db.col.update( { “count” : { $gt : 5 } } , { $set : { “test5” : “OK”} },true,true );
全部更新:
db.col.update( { “count” : { $gt : 15 } } , { $inc : { “count” : 1} },false,true );
只更新第一条记录:
db.col.update( { “count” : { $gt : 10 } } , { $inc : { “count” : 1} },false,false );

  • 查
    runoob 是集合名

show collections
查询库中有哪些集合

db.runoob.find()
{ “_id” : ObjectId(“5871cc462bea47350d13bb2e”), “x” : 10 }
db.col.find().pretty()
舒服的显示

插入文档你也可以使用 db.col.save(document) 命令。如果不指定 _id 字段 save() 方法类似于 insert() 方法。如果指定 _id 字段,则会更新该 _id 的数据。

  • 创建数据库

    use runoob
    switched to db runoob
    db.runoob.insert({“name”:”monkey”})
    WriteResult({ “nInserted” : 1 })
    show dbs
    local 0.078GB
    runoob 0.078GB
    test 0.078GB

  • 删除数据库

    use runoob
    switched to db runoob
    db.dropDatabase()

  • 删除集合

    db.collection.drop()

  • 创建索引

    db.col.ensureIndex({“title”:1})

  • 引用式关系
    引用式关系是设计数据库时经常用到的方法,这种方法把用户数据文档和用户地址数据文档分开,通过引用文档的 id 字段来建立关系。
    {
    “_id”:ObjectId(“52ffc33cd85242f436000001”),
    “contact”: “987654321”,
    “dob”: “01-01-1991”,
    “name”: “Tom Benzamin”,
    “address_ids”: [
    ObjectId("52ffc4a5d85242602e000000"),
    ObjectId("52ffc4a5d85242602e000001")
    
    ]
    }
    以上实例中,用户文档的 address_ids 字段包含用户地址的对象id(ObjectId)数组。
    我们可以读取这些用户地址的对象id(ObjectId)来获取用户的详细地址信息。
    这种方法需要两次查询,第一次查询用户地址的对象id(ObjectId),第二次通过查询的id获取用户的详细地址信息。

    var result = db.users.findOne({“name”:”Tom Benzamin”},{“address_ids”:1})
    var addresses = db.address.find({“_id”:{“$in”:result[“address_ids”]}})

启用web接口

httpinterface = true
rest = true

在默认端口上 加1000 是web端口

基本概念

SQL术语/概念 MongoDB术语/概念 解释/说明

database database 数据库
table collection 数据库表/集合
row document 数据记录行/文档
column field 数据字段/域
index index 索引
table joins 表连接,MongoDB不支持
primary key primary key 主键,MongoDB自动将_id字段设置为主键
数据库服务和客户端
Mysqld/Oracle mongod
mysql/sqlplus mongo

未命名

发表于 2017-02-27 |
  1. 设置去掉加密
    gsettings set org.gnome.Vino require-encryption false

  2. 启用远程桌面
    gnome-control-center sharingx11vnc

1…111213…21
kikiyou

kikiyou

越努力越幸运

204 日志
20 标签
GitHub Quora 知乎 豆瓣 果壳 Facebook Twitter 新浪微博
Links
  • Awesome
© 2015 - 2017 kikiyou
由 Hexo 强力驱动
主题 - NexT.Mist