当前位置 : 主页 > 操作系统 > centos >

Graylog 新一代日志收集预警系统安装配置

来源:互联网 收集:自由互联 发布时间:2022-06-30
在公司里面一直负责整个公司的监控体系的建设,主要包括底层服务器的硬件监控、系统层面的监控、网络设备的监控、中间件和应用层面的监控等等。虽然Zabbix支持日志监控,由于在

在公司里面一直负责整个公司的监控体系的建设,主要包括底层服务器的硬件监控、系统层面的监控、网络设备的监控、中间件和应用层面的监控等等。虽然Zabbix支持日志监控,由于在数据量、搜索和日志展示方面都比较弱化,只能做简单的日志报警。因此日志监控还是需要通过专业的工具来做。我对比过ELK、商业日志工具Splunk和Graylog,后面选择了Graylog。Graylog简单说就是一款开源的日志聚合、分析、审计、展现和预警工具。相比ELK,Graylog更轻量,UI界面更美观,有丰富和完善的API接口。目前收集了网络设备的日志、MySQL错误日志、Linux系统日志等,后期将考虑接入微服务日志。各种日志都按照错误级别做了统计分析,通过查看Dashboards报表就可以确认线上几千台设备是否有问题。对应高级别的日志通过Graylog +Python程序实现微信和邮件的告警的功能。

一、Graylog优点

零开发:从收集->存储->分析->呈现完整流程。部署维护简单:一体化解决方案,不像ELK三个独立系统集成。多日志源接入:syslog、Filebeat、Log4j、Logstash等。多协议接入:UDP、TCP、HTTP、AMQP。自定义面板:提供曲线图、饼状图、世界地图等丰富的图形列表。全文搜索:支持按语法进行过滤搜索全部日志。支持报警:具有报警功能的日志分析平台,目前只支持邮件,可以通过API实现微信告警。权限管理:灵活的权限分配和管理。支持集群:可以根据应用扩展平台性能。

二、Graylog架构设计,支持集群

GrayLog:提供 GrayLog对外接口,属于CPU密集。 Elasticsearch:日志文件的持久化存储和检索,属于IO密集。MongoDB:存储一些 GrayLog 的配置信息。

graylog_cluster.jpg

三、安装配置

3.1 通过Docker安装mongodb数据库。

#获取3.6.5版本的mongo镜像。 docker pull mongo:3.6.5 #运行容器。 docker run -itd --name graylog-mongo01 -p 27017:27017 mongo:3.6.5 --auth #进入mongo数据库,创建admin用户并授超级用户权限。 docker exec -it graylog-mongo01 mongo admin > use admin switched to db admin > db.createUser( ... { ... user:"admin", ... pwd:"xxxxxx", ... roles:[{role:"root",db:"admin"}] ... } ... ); #给graylog新建用户和密码,必须把数据库切换到该数据库下面。 > use graylog switched to db graylog > db.createUser( { user:"grayloguser", pwd:"xxxxxx", roles:[{role:"readWrite",db:"graylog"}] } ); #查看用户是否存在。 > show users; { "_id" : "graylog.grayloguser", "user" : "grayloguser", "db" : "graylog", "roles" : [ { "role" : "readWrite", "db" : "graylog" } ] } #通过用户名密码进入mongo容器里面 docker exec -it graylog-mongo01 mongo admin -u admin -p MongoDB shell version v3.6.5 Enter password: connecting to: mongodb://127.0.0.1:27017/admin MongoDB server version: 3.6.5

3.2 通过docker compose的方式安装ES。

[root@es01 ~]# cat /etc/docker/conf/docker-compose.yml version: '2.2' services: graylog-es01: image: xx.xx.xx.xx:10000/library/elasticsearch:7.6.0 container_name: graylog-es01 restart: always environment: - cluster.name=graylog-docker-cluster - node.name=graylog-es01 - discovery.type=single-node - network.host=0.0.0.0 - network.publish_host=192.168.xx.xx - transport.tcp.port=9300 - http.cors.enabled=true - http.cors.allow-origin=* - "ES_JAVA_OPTS=-Xms32g -Xmx32g" - bootstrap.memory_lock=true ulimits: memlock: soft: -1 hard: -1 volumes: - /data/elsearch/data:/usr/share/elasticsearch/data - /data/elsearch/logs:/usr/share/elasticsearch/logs ports: - 9200:9200 network_mode: host ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65535 hard: 65535 [root@es01 ~]# nohub docker-compose -f /etc/docker/conf/docker-compose.yml up &

3.3 安装Graylog服务。

创建graylog配置文件目录。

[root@graylog-server ~]# mkdir -p /etc/graylog/server/

安装graylog服务。

[root@graylog-server software]# tar -zxvf graylog-VERSION.tgz -C /usr/loca/ [root@graylog-server software ]# cd /usr/local/ [root@graylog-server local]# ln -s graylog-VERSION graylog

拷贝和编辑graylog配置文件和启动文件。

[root@graylog-server local]# cp graylog/graylog.conf /etc/graylog/server/ [root@graylog-server local]# cp graylog/bin/graylogctl /etc/init.d/ [root@graylog-server ~]# grep '^[a-z]' /etc/graylog/server/server.conf is_master = true node_id_file = /etc/graylog/server/graylog-node-1 password_secret = Z2LoxxeFvWoAPbMF0sIlYWhHH06leW6bfUAeImqhUe86Wzq8p4HDZAyKTQpaedvBuCoKYjaQAGQTj93R33sREiSIVt1sTRg0 root_username = admin root_password_sha2 = xxxxxx root_timezone = Asia/Shanghai bin_dir = bin data_dir = data plugin_dir = plugin http_bind_address = 0.0.0.0:8080 http_publish_uri = http://192.168.xx.xx:8080/ rotation_strategy = count elasticsearch_max_docs_per_index = 20000000 elasticsearch_max_number_of_indices = 20 retention_strategy = delete elasticsearch_shards = 4 elasticsearch_replicas = 0 elasticsearch_index_prefix = graylog allow_leading_wildcard_searches = false allow_highlighting = false elasticsearch_analyzer = standard output_batch_size = 500 output_flush_interval = 1 output_fault_count_threshold = 5 output_fault_penalty_seconds = 30 processbuffer_processors = 5 outputbuffer_processors = 3 processor_wait_strategy = blocking ring_size = 65536 inputbuffer_ring_size = 65536 inputbuffer_processors = 2 inputbuffer_wait_strategy = blocking message_journal_enabled = true message_journal_dir = data/journal lb_recognition_period_seconds = 3 #指定mongodb数据库用户名和密码。 mongodb_uri = mongodb://grayloguser:graylogpasswd@192.168.xx.xx:27017/graylog mongodb_max_connections = 1000 mongodb_threads_allowed_to_block_multiplier = 5 #指定graylog邮件服务,后期告警可以通过这个发邮件。 transport_email_enabled = true transport_email_hostname = 192.168.xx.xx transport_email_port = 25 transport_email_use_auth = false transport_email_subject_prefix = [graylog] transport_email_from_email = X-men@110.zmzblog.com proxied_requests_thread_pool_size = 32

启动graylog服务。

[root@graylog-server ~]# /etc/init.d/graylogctl start

3.4 验证graylog服务安装配置是否正常。通过http://yourip:9000来访问。

graylog_login.png

四、总结

1)root_password_sha2 密码可以通过 echo -n yourpassword | sha256sum来生成,这里的yourpassword是用来登录graylog的admin用户的密码。生成的root_password_sha2密码请删除空格和-,否则登录不成功。

[root@graylog-server ~]# echo -n xxxxxx | sha256sum 240be518fabd2724ddb6f04eeb1da5967448d7e831c08c8fa822809f74c720a9 -

2)编辑graylog启动文件,指定graylog 配置文件的路径。

[root@graylog-server ~]# vim /etc/init.d/graylogctl GRAYLOG_CONF=${GRAYLOG_CONF:=/etc/graylog/server/server.conf}
上一篇:##测试bug常用“Redmine”
下一篇:没有了
网友评论