Monkey

Think! And Think Again


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

  • 站点地图

  • 公益404

  • 搜索

未命名

发表于 2017-05-23 |

北向网管告警梳理

  1. 告警流水 unix时间戳
  2. 告警时间 2017-03-02
  3. 网元名称 主机名
  4. 网元类型
  5. 网元IP 告警主机ip
  6. 网元ID 不填
  7. 告警码 时间id -> {EVENT.ID}
  8. 告警分类 分类 1-5
  9. 告警级别 级别 1-4 5是清除 –> {TRIGGER.SEVERITY}
  10. 告警定位
  11. 告警原因
  12. 告警附加 映射表中字段(“epgconnerror”)

能自由发挥的 三个参数

  1. 产生告警的网元类型
  2. 告警定位信息
  3. 告警原因

  1. 产生告警的网元类型 unknow
  2. 告警定位信息 :{ITEM.NAME} + {ITEM.VALUE}
  3. 告警原因: {TRIGGER.NAME}

在告警解释里面,附加信息,

  1. epg_error epg错误
  2. ss_error ss错误
  3. unknow 未标识错误

  1. 先判断,告警解释{TRIGGER.DESCRIPTION}中是否 有$$.开始的字段,如果有就把其中json解析替换,
  2. 如果没有就是unknow,原生发出

网元类型 就是unknow

  1. 告警解释中内容(全):
    $$.{“告警流水”:”1212121”,”告警时间”:”2017-03-02”,”网元名称”:”CZ-WFLT-F4-IPTV-Server-EPG01”,”网元类型”:”EPG”, “网元IP”:”1.1.1.1”,”网元ID”:””,”告警码”:”12121”,”告警分类”:”1”,”告警级别”:”1”,”告警定位”:”Free disk space is less than 20% on volume /“ “10%”,”告警原因”:”Free disk space on / (percentage)”,”告警附加”:”11111”}

  2. 一般
    $$.{“网元类型”:”EPG”,”告警附加”:”epgconnerror”}

—–发出的告警内容是 原生
告警流水: 1212121
告警时间: 2017-03-01
网元名称: CZ-WFLT-F4-IPTV-Server-EPG01
网元类型: unknow
网元IP: 1.1.1.1
网元ID: 不填
告警码: 111
告警分类: 1
告警级别: 1
告警定位: “Free disk space is less than 20% on volume /“ : “10%”
告警原因: Free disk space on / (percentage)
告警附加: 未标识错误

——发出告警的内容 自定义
告警流水: 1212121
告警时间: 2017-03-01
网元名称: CZ-WFLT-F4-IPTV-Server-EPG01
网元类型: EPG
网元IP: 1.1.1.1
网元ID: 不填
告警码: 111
告警分类: 1
告警级别: 1
告警定位: “Free disk space is less than 20% on volume /“ : “10%”
告警原因: Free disk space on / (percentage)
告警附加: EPG连接错误

告警恢复策略

  1. 告警级别 是5
  2. 第11 和 12字段 内容一致 (告警和恢复不变)
  3. 第10个字段完全可变

所以 第11个字段不应该是 {TRIGGER.NAME} 应该是 {ITEM.NAME}

第10个字段是 可以变的,可以在第10个字段里面写 {TRIGGER.NAME}


名称:北向网管告警
默认接收人:{TRIGGER.DESCRIPTION}
默认信息:

{“host_name”:”{HOST.NAME}”,”host_ip”:”{HOST.IP}”,”alarm_code”:”{EVENT.ID}”,”alarm_level”:”{TRIGGER.SEVERITY}”,”alarm_status”:”{TRIGGER.STATUS}”,”alarm_extend_info”:”{TRIGGER.NAME}”,”alarm_probablecause”:”{ITEM.NAME}”}

未命名

发表于 2017-05-23 |

各网元 启动方式和检测办法

ott 地址: 172.16.199.119
包含模块:

cdn 地址: 172.16.199.120
包含模块: CMM SS

CMM

  • 启动方式:
    /opt/fonsview/NE/cmm/bin/start.sh

  • 检测办法
    访问:
    http://172.16.199.120:8190/ContentDeployReq
    返回: 200

SS

  • 启动方式:
    /opt/fonsview/NE/ss/bin/start.sh

  • 检测办法
    地址:

  • RR_IPTV rtsp://172.16.199.120:554
  • RR_HPD http://172.16.199.120:8106
  • RR_HLS http://172.16.199.120:8112

可以查看这些端口 是否处于 侦听状态

oss

地址:
http://172.16.199.120:8081/oss/login.seam?cid=1
返回:200

管理员账户:001
密码:111111

在 aaa 里面 看 userprofile 表中 是否有创建账户

rabbitmp

http://server-name:15672

未命名

发表于 2017-05-23 |

#老主机 centos5
ssh fonsview@10.192.102.xx -o ProxyCommand=’ssh hetxng@xx.68.211.4 nc %h 50000’ “ls /tmp”

#新主机 centos6
ssh fonsview@10.192.102.xx -o ProxyCommand=’ssh -W %h:50000 hetxng@xx.68.211.4 ‘ “ls /tmp”

config

Host bastion
Hostname 192.168.100.102
IdentityFile ~/.ssh/bastion_rsa
User vagrant

Host remote*
IdentityFile ~/.ssh/remote_rsa
ProxyCommand ssh bastion -W %h:%p

未命名

发表于 2017-05-23 |

机顶盒播放数据流程

机顶盒地址: 172.16.12.42
epg地址: 172.16.199.120
aaa地址: 172.16.199.120
ss地址: 172.16.199.120

1.盒子请求epg页面

盒子请求:
GET /epg/index.html HTTP/1.1
Host: 172.16.199.120:6600

epg 返回: OK

2.盒子请求aaa认证,认证是否为合法的盒子

盒子请求:
POST /aaa/services/rest/V2/AAA/User/Login HTTP/1.1 (application/json)
{
userToken: 979D7C1B0586C8D4E53311BE0E7DC880
terminalType: 2
deviceId: g18ref
timestamp: 89698982
timezone: Asia/Shanghai
random: a0d87557-fd39-4d0f-9c70-7a1f27f17151
isTestUser: 0
sp:
hmac: ZXpcIcdiKCDAh8zacPXQueHqghfBpna3zL7X7wIR+ko=
userId: U00000013
}

aaa认证成功返回:
{
“resultCode”: “0”,
“description”: “ok”,
“userId”: “U00000013”,
“userToken”: “45F051331AFE21F8CB3B0351C95C4AE4”,
“expiration”: “43200000”,
“channelList”: [],
“group”: “EPG_default,User_99”,
“sp”: “”,
“isTestUser”: 0,
“entryList”: [
{
“type”: “epg”,
“url”: “http://172.16.199.120:6600/epg/rest/SPM“
}
]
}

3.盒子获取EPG资源

盒子请求:
GET /epg/rest/SPM/V2/Template/Info?group=EPG_default%2CUser_99&epgIdentifier=com.hunantv.operator.hnyd&epgVersion=50034 HTTP/1.1
{
userToken: 45F051331AFE21F8CB3B0351C95C4AE4
terminalType: 2
deviceId: g18ref
timestamp: 89699302
timezone: Asia/Shanghai
random: 5901aa4a-caa0-48dd-b026-050411119915
isTestUser: 0
sp:
hmac: y7MdIe50a9qLAMyNTwqGRt9Hp5CGmhGacBdHWjlyTYw=
userId: U00000013
}

EPG返回:
{
“resultCode”: 0,
“description”: “Success”,
“templateVersion”: 9,
“templateId”: 1
}

4.盒子获取EPG 模板配置

GET /epg/rest/SPM/V2/Template/1/Configuration HTTP/1.1
{
userToken: 45F051331AFE21F8CB3B0351C95C4AE4
…..
}

EPG返回:
{
“configuration”: {
“toolbar”: {
….
}
}
}

5.盒子获取 EPG各项内容

GET /epg/rest/SPM/V2/Media/Label?language=zh_CN&type=1 HTTP/1.1
GET /epg/rest/SPM/V2/EPG/com.hunantv.operator.hnyd/Version/50034/Configuration?group=EPG_default%2CUser_99&version=0 HTTP/1.1
GET /epg/rest/SPM/V2/App/Check/com.hunantv.operator/Version/50034?manufacturer=FONSVIEW&group=EPG_default%2CUser_99&macAddress=00%3A11%3A6D%3A18%3A83%3AA8&identity=00116D1883A8&epgIdentifier=com.hunantv.operator.hnyd&model=F720&stbId=12345678900 HTTP/1.1
GET /epg/rest/SPM/V3/Media/MediaType/2/Content/00000003000000001234000000000017?kid=0&index=0&language=zh_CN HTTP/1.1

6.盒子请求EPG的认证,查看是否可以播放这个资源

POST /epg/rest/SPM/V3/AAA/Content/Single/Authentication HTTP/1.1
{
“contentId”: “00000003000000001234000000000017”,
“index”: “0”,
“mediaType”: “2”
}

EPG认证成功返回 播放地址:
{
“resultCode”: 0,
“contentId”: “00000003000000001234000000000017”,
“description”: “Success”,
“playUrl”: [
{
“subtitles”: null,
“contentId”: “00000003000000001234000000000019”,
“length”: “00042100”,
“format”: 1,
“pId”: “00000003000000001234000000000018”,
“episode”: 1,
“is3D”: 0,
“bitrate”: null,
“playUrl”: “http://172.16.199.120:8112/fonsview_hls/00000003000000001234000000000019“
}
]
}

7. 盒子 请求EPG

盒子:
GET /epg/rest/SPM/V2/AD/Scene/HNYD_LOADING?group=EPG_default%2CUser_99&language=zh_CN HTTP/1.1

EPG返回:
{
“ads”: [],
“adrule”: 0,
“totalTime”: 0,
“resultCode”: 1,
“description”: “No advertisement”
}

盒子:
GET /epg/rest/SPM/V2/Recommend/MediaType/2/Content/00000003000000001234000000000017?categoryId=null&programType=1000&begin=0&pageSize=12&language=zh_CN HTTP/1.1

EPG返回:
{
“resultCode”: 0,
“description”: “Success”,
“metadataList”: []
}

8.盒子向ss请求资源 流媒体播放地址

盒子:
GET /fonsview_hls/00000003000000001234000000000019?stbId=12345678900&userID=U00000013&userToken=&usergroup= HTTP/1.1
Host: 172.16.199.120:8112

SS返回 location 让盒子重定向:
Location: http://172.16.199.120:8114/fonsview_hls/00000003000000001234000000000019?stbId=12345678900&userID=U00000013&userToken=&usergroup=&FvSeid=5599584b10b683d0&Fsv_ctype=VODS&Fsv_cid=1008&Fsv_FirstSegID=4&Fsv_BtNum=3&Fsv_filetype=0&Fsv_TBt=6000000&Fsv_otype=1&Provider_id=fonsview_hls&Pcontent_id=00000003000000001234000000000019

注:
这个过程是,盒子请求 cdn的master地址 也就是端口 8112 ,master会根据自己的负载均衡算法,让用户302跳转到 slave节点(端口8114)

9.盒子向ss slave节点请求 媒体文件

盒子请求:
GET /fonsview_hls/00000003000000001234000000000019?stbId=12345678900&userID=U00000013&userToken=&usergroup=&FvSeid=5599584b10b683d0&Fsv_ctype=VODS&Fsv_cid=1008&Fsv_FirstSegID=4&Fsv_BtNum=3&Fsv_filetype=0&Fsv_TBt=6000000&Fsv_otype=1&Provider_id=fonsview_hls&Pcontent_id=00000003000000001
Host: 172.16.199.120:8114

SS返回:

#EXTM3U

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3000000
http://172.16.199.120:8114/VODS/1008_0050000004.m3u8?Fsv_filetype=1&Fsv_cid=1008&Fsv_FirstSegID=50000004&Provider_id=fonsview_hls&Pcontent_id=00000003000000001234000000000019&Fsv_otype=1&FvSeid=5599584b10b683d0&AuthInfo=&version=

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2000000
http://172.16.199.120:8114/VODS/1008_0030000004.m3u8?Fsv_filetype=1&Fsv_cid=1008&Fsv_FirstSegID=30000004&Provider_id=fonsview_hls&Pcontent_id=00000003000000001234000000000019&Fsv_otype=1&FvSeid=5599584b10b683d0&AuthInfo=&version=

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1000000
http://172.16.199.120:8114/VODS/1008_0010000004.m3u8?Fsv_filetype=1&Fsv_cid=1008&Fsv_FirstSegID=10000004&Provider_id=fonsview_hls&Pcontent_id=00000003000000001234000000000019&Fsv_otype=1&FvSeid=5599584b10b683d0&AuthInfo=&version=

根据带宽,不同的带宽 3MB,2MB,1MB 访问不同的码率文件

10.盒子请求播放文件

盒子请求:
GET /VODS/1008_0030000004.m3u8?Fsv_filetype=1&Fsv_cid=1008&Fsv_FirstSegID=30000004&Provider_id=fonsview_hls&Pcontent_id=00000003000000001234000000000019&Fsv_otype=1&FvSeid=5599584b10b683d0&AuthInfo=&version= HTTP/1.1
Host: 172.16.199.120:8114

SS slave节点返回:

#EXTM3U

#EXT-X-MEDIA-SEQUENCE:0

#EXT-X-VERSION:3

#EXT-X-TARGETDURATION:10

#EXTINF:10.000000,
http://172.16.199.120:8114/VODS/1008_140000004_0010000004_0000000000_0002836731.ts?Fsv_Sd=10&Fsv_filetype=2&Provider_id=fonsview_hls&Pcontent_id=00000003000000001234000000000019&FvOPid=00000003000000001234000000000019&Fsv_MBt=0&FvHlsIdx=3&UserID=&Fsv_otype=1&FvSeid=5599584b10b683d0

#EXTINF:10.000000,
http://172.16.199.120:8114/VODS/1008_140000004_0010000004_0002836732_0005661055.ts?Fsv_Sd=10&Fsv_filetype=2&Provider_id=fonsview_hls&Pcontent_id=00000003000000001234000000000019&FvOPid=00000003000000001234000000000019&Fsv_MBt=0&FvHlsIdx=3&UserID=&Fsv_otype=1&FvSeid=5599584b10b683d0

#EXTINF:10.000000,

剩下就是流媒体播放了 …..
世界上最优美的音乐, <<千里之外>> 开始播放了 ……..

未命名

发表于 2017-05-23 |

主机信息:
172.16.6.43 monkey-4 flueme+kafka+fsvlogstash+stdm
172.16.6.42 monkey-5 stsc stsc-reports cas es-master
172.16.6.232 monkey-6 es-node

kafka-topics.sh –zookeeper localhost:2181 –list

kafka-console-consumer.sh –zookeeper localhost:2181 –from-beginning –topic cdn-viewlog-hls-stsc

安装时间:4:02.56秒

访问地址:
http://172.16.6.42:6600/stat_reports/

es地址:
http://172.16.6.42:9200/_plugin/head/

启动服务:

monekey4
cd /opt/fonsview/3RD/flume-1.7.0/bin
./flume.sh start

/etc/init.d/kafka start &
/etc/init.d/zookeeper start &

cd /opt/fonsview/NE/stsc/stdm/bin
sh -x stdm.sh start

/etc/init.d/fsvlogstash start

monkey5
/etc/init.d/elasticsearch start

monkey6
/etc/init.d/elasticsearch start

未命名

发表于 2017-05-23 |
  1. elk
  2. epg 监控脚本修改

    1. 如果有nginx存在 curl 6600
    2. 如果没有nginx 存在 curl 6601
    3. 6601的这个端口 读取tomcat配置文件,从tomcat中获取
  3. kafana汉化

  4. 统计报表 epg在线用户数

  5. 写 周一到周三的日报

hexo 报错解决

发表于 2017-05-23 |

Hexo博客Bug:
}}```符号引起的生成报错
1
2
3
4
5
6
7
8
9
10
11
<!-- more -->
今天使用hexo g 生成博客页面的时候报错了
``` bash
$ hexo g
INFO Start processing
FATAL Something“s wrong.
Template render error: (unknown path) [Line 1, Column 155]
unexpected token: }}
at Object.exports.prettifyError (/home/dawx/sync/blog/node_modules/hexo/node_modules/nunjucks/src/lib.js:34:15)
at Obj.extend.render (/home/dawx/sync/blog/node_modules/hexo/node_modules/nunjucks/src/environment.js:468:27)

作为一个非前端人员,看到一堆js 就懵逼了

Google 之

原来是 我写博客 引用的jinja 代码中 { { } } 符号
和hexo有冲突

解决办法:

把代码 使用 ``` 注释起来就好了

推荐: 以后引用的代码最好注释起来

运行 $ hexo server 命令有时会返回这样的错误:

1
Error: watch ENOSPC …
可以用过运行 $ npm dedupe 来解决,如果不起作用的话,可以尝试在 Linux 终端中运行下列命令:

1
$ echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
这将会提高你能监视的文件数量。

未命名

发表于 2017-05-23 |
  1. 下载
    docker run -p 8080:8080 -p 50000:50000 jenkins

  2. 访问
    http://127.0.0.1:8080/

1
2
3
4
5
6
7
8
9
jenkins version
Jenkins 2.46.1
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation
0016cae29829465c99a4f90dc727a520
This may also be found at /var/jenkins_home/secrets/initialAdminPassword
  1. 在插件管理中添加仓库
    清华大学镜像仓库:
    https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

仓库添加好之后 还要重新获取update

  1. 安装pipeline模块

构建步骤
scm build existence regression report deploy

—–jenkins 目录结构
root ➜ ~ rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/lib/jenkins
/usr/lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/lib/jenkins
/var/log/jenkins

—-docker 团队
https://jenkins.dockerproject.org/

问题:
1.
groovy的脚本 可以在http://:8080/script 执行

写到pipeline中,调用系统有些库,会报错 不允许。

原因:在pipeline中,为了安全性groovy默认是在一个sandbox环境中运行的

解决办法:

  1. Jenkins -> 系统管理 -> In-process Script Approval 当在sanbox环境中被拒绝调用的api会显示在这里,点击Approval 允许即可 (ps:这里很反人类,允许只能一个个的允许,点一堆很痛苦)

  2. 在新建的pipeline任务中,下面有个默认勾选的选项,去除勾选,让任务不在sandbox中允许即可。

1
2
3
4
5
6
7
引入外部sdk
1. Go to Jenkins > Manage Jenkins > Configure System
2. Check "Environment variables"
3. add name: ANDROID_HOME, value -> your android sdk dir
4. click "add"
5. SCROLL DOWN CLICK SAVE

—–远程执行脚本

1
2
3
4
5
6
7
8
9
(fonsview_deploy) monkey ➜ groovy cat run.sh
script_path=$1
echo $script_path
mytoken=$(curl --user 'monkey:123.coM' -s http://127.0.0.1:8080/crumbIssuer/api/json | python -c 'import sys,json;j=json.load(sys.stdin);print j["crumbRequestField"] + "=" + j["crumb"]')
curl --user 'monkey:123.coM' -d "$mytoken" --data-urlencode "script=$(<$script_path)" http://127.0.0.1:8080/scriptText
---
run.sh 1.groovy
http://myserver/jenkins/scriptler/run/<yourScriptId>?param1=value1

jenksins 启用ssh server

install sshd 模块
jenkins -> 系统管理 -> 系统设置 –> SSH Server –> SSHD Port –> 随机一个port

启动docker镜像端口

安装Docker plugin 模块
tcp://172.16.42.43:4243 or unix:///var/run/docker.sock

CloudBees Docker Build and Publish1.3.2 利用dockerfile 构建系统

好网站教你怎么打包镜像
https://www.katacoda.com/

https://go.cloudbees.com/docs/cloudbees-documentation/cje-user-guide/index.html#docker-workflow

https://my.oschina.net/donhui/blog/481230

自动清除工作空间

deleteDir()

未命名

发表于 2017-05-23 |

python -m elastalert.elastalert –config ./config.yaml

参考

未命名

发表于 2017-05-23 |
  • 只返回指定的字段

    查询

    1. 使用 _source
      GET /logstash-v5-equipment-2016.11.03/v5-equipment/_search
      {
      “_source”: {
      “include”: [“uid”]
      },
      “query”:{
      “filtered”:{
      “filter”:{
      “match”:{“code”:”ZhiZunBaoXiang”}
      }
      }
      }
      }
  1. 使用fields 字段
    GET /logstash-v5-equipment-2016.11.03/v5-equipment/_search
    {
    “fields”: [“uid”],
    “query”:{
    “filtered”:{
    “filter”:{
    "match":{"code":"ZhiZunBaoXiang"}
    
    }
    }
    }
    }

Elasticsearch Query DSL、Facets、Aggs学习困惑。

有人为此开发了使用SQL执行ES Query的插件,一定程度上减轻了进入门槛。我们给出的学习他们的建议是观察Kibana的Request Body或试用Marvel的Senese插件,它有自动完成Query、Facets、Aggs的功能。另外最常用的query是query string query,最常用的aggs是Terms、Date Histogram,可以应付大部分需求。

1…456…21
kikiyou

kikiyou

越努力越幸运

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