Graylog:集中日志解决方案
一:为什么需要集中日志解决方案?
在公司服务机子部署越来越多的情况下,让我们来想想会遇到的问题:
- 开发人员不能登录线上服务器查看详细日志,经过运维周转费时费力
- 日志数据分散在多个系统,难以查找
- 日志数据量大,查询速度慢
- 一个调用会涉及多个系统,难以在这些系统的日志中快速定位数据
- 数据不够实时
- 很难对数据进行挖掘,分析,业务告警,审计
这些问题的存在让开发以及运维人员很是头痛,严重影响效率!
二:什么是graylog技术栈?
为了解决上述问题,我们需要一个日志的集中管理方案,graylog技术栈:
- Collector-sidecar(收集日志)或者syslog
- Mongodb(存储日志源文件)
- Elasticsearch(提供搜索日志)
- Graylog2.1.1(搜索和视图展示日志,告警和权限)
有了这些,我们就能把日志先收集起来,进行我们想要的分析之后,web的形式展示出来,提供查询!
三:graylog的安装部署
安装环境:linux centOS系统安装,已安装JDK1.8版本,安装启动顺序
- 安装部署mongodb
- 安装部署elasticsearch
- 安装部署graylog
- 安装部署Graylog Collector Sidecar
1:安装部署mongodb
参考我的博文:linux下安装mongodb https://my.oschina.net/baishi/blog/758367
2:安装部署elasticsearch
(1)下载jar包
如果报错
执行
wget --no-check-certificate
(2)解压jar包
tar -zxvf elasticsearch-2.3.5.tar.gz
(3)修改elasticsearch.yml配置文件
elasticsearch-2.3.5安装目录conf下执行
vim elasticsearch.yml
cluster.name: graylog #集群名称建议命名graylog,便于识别区分
node.name: elasticsearch-node-92 # elasticsearch集群节点名称
network.host: 自己安装节点IP # 绑定节点IP
http.port: 9200 # 外部访问端口,默认,也可以安全考虑修改
discovery.zen.ping.multicast.enabled: false #多播发现方式关闭,因为graylog采用单播方式发现elasticsearch集群方式
discovery.zen.ping.unicast.hosts #多个节点用逗号隔开
discovery.zen.minimum_master_nodes: 3 # elasticsearch集群节点,最少选举数,这个数一定要设置为整个集群节点个数的一半加1,即N/2+1,必须为奇数
(4)启动elasticsearch服务
新建一个elasticsearch用户,出于安全考虑,elasticsearch服务不能使用root用户启动
创建elasticsearch用户组及elasticsearch用户,执行
groupadd elasticsearch
useradd elasticsearch -g elasticsearch -p elasticsearch
(其中-g使用户属于某个组,-p为新用户使用加密密码)
更改elasticsearch-2.3.5文件夹及内部文件的所属用户及组为elasticsearch:elasticsearch
chown -R elasticsearch:elasticsearch elasticsearch-2.3.5
切换用户
su elasticsearch
在elasticsearch-2.3.5/bin目录下执行
./elasticsearch -d
解释:-d:服务在后台启动
(5)检查elasticsearch服务状态
浏览器访问:http://elasticsearch节点所在IP:9200/
证明服务启动成功
(6)注意事项
elasticsearch集群安装,各个节点,要保证elasticsearch.yml中cluster.name: graylog,集群名称一致
如果想停止服务
ps -ef | grep elastic
kill -9 进程号
3:安装部署graylog
(1)下载安装包
wget https://packages.graylog2.org/releases/graylog/graylog-2.1.1.tgz
(2)解压安装包
tar -zxvf graylog-2.1.1.tgz
(3)修改配置文件
修改安装目录下 graylog.conf.example 文件
vim graylog.conf.example
web_listen_uri 值是graylog启动成功后,web服务访问地址
rest_listen_uri 的值,是graylog启动成功后,api访问地址
其中 password_secret 的值用命令生成
pwgen -N 1 -s 96
其中root_password_sha2 的值使用命令生成
echo -n 123456| sha256sum (这里对密码123456哈希加密)
elasticsearch_cluster_name 值必须是elasticsearch配置文件中的cluster_name
elasticsearch_discovery_zen_ping_unicast_hosts 填写elasticsearch地址,如果是多个,用逗号隔开
elasticsearch_discovery_zen_ping_multicast_enabled = false 多播模式关闭
elasticsearch集群分片数量
elasticsearch绑定的节点IP
mongodb安装服务的ip地址
设置告警邮件发送者信息
(4)复制配置文件
因为graylog安装bin目录下,默认启动配置文件
配置文件路径:/etc/graylog/server/server.conf
所以需要将 graylog.conf.example 复制到/etc/graylog/server/目录下,并且改名 server.conf
执行命令:
mkdir -p /etc/graylog/server/
cp graylog.conf.example /etc/graylog/server/server.conf
(5)启动graylog
在graylog安装bin目录下执行
./graylogctl start
查看日志,在graylog安装目录下执行
tail -200f /log/graylog-server.log
如果报错:
原因:
在mongodb版本2.6之后,是需要日志journaling设置的,而默认情况下是关闭的
解决办法:
在mongodb启动命令加上 --journal
最后启动命令:
./mongod --dbpath=/usr/local/mongodb/data/ --fork --logpath=/usr/local/mongodb/logs --storageEngine=mmapv1 --journal
重启mongodb后,重启graylog服务即可!
graylog启动成功,日志输出
如果需要停止graylog服务,在graylog安装bin目录下执行
./graylogctl stop
(6)访问graylog
graylog启动成功后,浏览器访问:graylog安装IP:9000
用户名:admin (配置文件中)
密码:123456 (配置文件中 root_password_sha2 加密123456值)
四:总结
到此,基础的集中日志管理graylog安装完毕!,后续将继续介绍:
安装部署Graylog Collector Sidecar 收集应用日志
采用syslog收集日志方式
graylog一些使用,包括日志截取,告警等
之前也实践过ELK技术栈,后来选型graylog,是基于graylog带有的权限管理,和告警功能比较完善!
目前遗留的问题,是后期随着时间的积累,怎样去维护历史日志数据,欢迎有相关经验的朋友,一起讨论!
转载于:https://my.oschina.net/baishi/blog/776003