- Logstash
- Logstash - 入门示例
- 入门示例 - 下载安装
- 入门示例 - hello world
- 入门示例 - 配置语法
- 入门示例 - plugin的安装
- 入门示例 - 长期运行
- Logstash - 插件配置
- 插件配置 - input配置
- input配置 - file
- input配置 - stdin
- input配置 - syslog
- input配置 - tcp
- 插件配置 - codec配置
- codec配置 - json
- codec配置 - multiline
- codec配置 - collectd
- codec配置 - netflow
- 插件配置 - filter配置
- filter配置 - date
- filter配置 - grok
- filter配置 - dissect
- filter配置 - geoip
- filter配置 - json
- filter配置 - kv
- filter配置 - metrics
- filter配置 - mutate
- filter配置 - ruby
- filter配置 - split
- filter配置 - elapsed
- 插件配置 - output配置
- output配置 - elasticsearch
- output配置 - email
- output配置 - exec
- output配置 - file
- output配置 - nagios
- output配置 - statsd
- output配置 - stdout
- output配置 - tcp
- output配置 - hdfs
- Logstash - 场景示例
- 场景示例 - nginx访问日志
- 场景示例 - nginx错误日志
- 场景示例 - postfix日志
- 场景示例 - ossec日志
- 场景示例 - windows系统日志
- 场景示例 - Java日志
- 场景示例 - MySQL慢查询日志
- Logstash - 性能与测试
- 性能与测试 - generator方式
- 性能与测试 - 监控方案
- 监控方案 - logstash-input-heartbeat方式
- 监控方案 - jmx启动参数方式
- 监控方案 - API方式
- Logstash - 扩展方案
- 扩展方案 - 通过redis传输
- 扩展方案 - 通过kafka传输
- 扩展方案 - AIX 平台上的logstash-forwarder-java
- 扩展方案 - rsyslog
- 扩展方案 - nxlog
- 扩展方案 - heka
- 扩展方案 - fluent
- 扩展方案 - Message::Passing
- Logstash - 源码解析
- 源码解析 - pipeline流程
- 源码解析 - Event的生成
- Logstash - 插件开发
- 插件开发 - utmp插件示例
- Beats
- Beats - filebeat
- Beats - packetbeat网络流量分析
- Beats - metricbeat
- Beats - winlogbeat
- ElasticSearch
- ElasticSearch - 架构原理
- 架构原理 - segment、buffer和translog对实时性的影响
- 架构原理 - segment merge对写入性能的影响
- 架构原理 - routing和replica的读写过程
- 架构原理 - shard的allocate控制
- 架构原理 - 自动发现的配置
- ElasticSearch - 接口使用示例
- 接口使用示例 - 增删改查操作
- 接口使用示例 - 搜索请求
- 接口使用示例 - Painless脚本
- 接口使用示例 - reindex接口
- ElasticSearch - 性能优化
- 性能优化 - bulk提交
- 性能优化 - gateway配置
- 性能优化 - 集群状态维护
- 性能优化 - 缓存
- 性能优化 - fielddata
- 性能优化 - curator工具
- 性能优化 - profile接口
- ElasticSearch - rally测试方案
- ElasticSearch - 多集群互联
- ElasticSearch - 别名的应用
- ElasticSearch - 映射与模板的定制
- ElasticSearch - puppet-elasticsearch模块的使用
- ElasticSearch - 计划内停机升级的操作流程
- ElasticSearch - 镜像备份
- ElasticSearch - rollover和shrink
- ElasticSearch - Ingest节点
- ElasticSearch - Hadoop 集成
- Hadoop 集成 - spark streaming交互
- ElasticSearch - 权限管理
- 权限管理 - Shield
- 权限管理 - Search-Guard 在 Elasticsearch 2.x 上的运用
- ElasticSearch - 监控方案
- 监控方案 - 监控相关接口
- 监控相关接口 - 集群健康状态
- 监控相关接口 - 节点状态
- 监控相关接口 - 索引状态
- 监控相关接口 - 任务管理
- 监控相关接口 - cat 接口的命令行使用
- 监控方案 - 日志记录
- 监控方案 - 实时bigdesk方案
- 监控方案 - cerebro
- 监控方案 - zabbix trapper方案
- ElasticSearch - ES在运维监控领域的其他玩法
- ES在运维监控领域的其他玩法 - percolator接口
- ES在运维监控领域的其他玩法 - watcher报警
- ES在运维监控领域的其他玩法 - ElastAlert
- ES在运维监控领域的其他玩法 - 时序数据库
- ES在运维监控领域的其他玩法 - Grafana
- ES在运维监控领域的其他玩法 - juttle
- ES在运维监控领域的其他玩法 - Etsy的Kale异常检测
- Kibana 5
- Kibana 5 - 安装、配置和运行
- Kibana 5 - 生产环境部署
- Kibana 5 - discover功能
- Kibana 5 - 各visualize功能
- 各visualize功能 - area
- 各visualize功能 - table
- 各visualize功能 - line
- 各visualize功能 - markdown
- 各visualize功能 - metric
- 各visualize功能 - pie
- 各visualize功能 - tile map
- 各visualize功能 - vertical bar
- Kibana 5 - dashboard功能
- Kibana 5 - timelion 介绍
- Kibana 5 - console 介绍
- Kibana 5 - setting功能
- Kibana 5 - 常用sub agg示例
- 常用sub agg示例 - 函数堆栈链分析
- 常用sub agg示例 - 分图统计
- 常用sub agg示例 - TopN的时序趋势图
- 常用sub agg示例 - 响应时间的百分占比趋势图
- 常用sub agg示例 - 响应时间的概率分布在不同时段的相似度对比
- Kibana 5 - 源码解析
- 源码解析 - .kibana索引的数据结构
- 源码解析 - 主页入口
- 源码解析 - discover解析
- 源码解析 - visualize解析
- 源码解析 - dashboard解析
- Kibana 5 - 插件
- 插件 - 可视化开发示例
- 插件 - 后端开发示例
- 插件 - 完整app开发示例
- Kibana 5 - Kibana报表
- 竞品对比
Beats - metricbeat
使用 beat 监控服务性能指标是 ElasticStack 一个常见的使用场景。2.x 时代要求用户对每类常见都需要单独开发自己的 xxxbeat 工具,然后各自编译使用。于是 Elastic.co 公司最终干脆把这件事情统一成了 metricbeat。
目前 metricbeat 支持以下服务性能指标:
- Apache
- HAProxy
- MongoDB
- MySQL
- Nginx
- PostgreSQL
- Redis
- System
- Zookeeper
配置示例
metricbeat.modules:
- module: system
metricsets:
- cpu
- filesystem
- memory
- network
- process
enabled: true
period: 10s
processes: ['.*']
cpu_ticks: false
- module: apache
metricsets: ["status"]
enabled: true
period: 1s
hosts: ["http://127.0.0.1"]
Apache
Apache 模块支持 2.2.31 以上的 2.2 系列,或 2.4.16 以上的 2.4 系列版本。
使用该模块要求被监控的 Apache 服务器上安装配置有 mod_status
扩展。通过该扩展可以监控到的 status 数据示例如下:
"apache": {
"status": {
"bytes_per_request": 1024,
"bytes_per_sec": 0.201113,
"connections": {
"async": {
"closing": 0,
"keep_alive": 0,
"writing": 0
},
"total": 0
},
"cpu": {
"children_system": 0,
"children_user": 0,
"load": 0.00652482,
"system": 1.46,
"user": 1.53
},
"hostname": "apache",
"load": {
"1": 0.55,
"15": 0.31,
"5": 0.31
},
"requests_per_sec": 0.000196399,
"scoreboard": {
"closing_connection": 0,
"dns_lookup": 0,
"gracefully_finishing": 0,
"idle_cleanup": 0,
"keepalive": 0,
"logging": 0,
"open_slot": 325,
"reading_request": 0,
"sending_reply": 1,
"starting_up": 0,
"total": 400,
"waiting_for_connection": 74
},
"total_accesses": 9,
"total_kbytes": 9,
"uptime": {
"server_uptime": 45825,
"uptime": 45825
},
"workers": {
"busy": 1,
"idle": 74
}
}
}
模块携带有一个预一定好的仪表盘,效果如下:
HAProxy
HAProxy 模块支持 HAProxy 服务器 1.6 版本。
使用该模块要求在 HAProxy 服务器配置的 global
或 default
区域写有如下配置:
stats socket 127.0.0.1:14567
模块可以采集两类信息:info 和 stat。
其中 info 的返回数据示例如下:
"haproxy": {
"info": {
"compress_bps_in": 0,
"compress_bps_out": 0,
"compress_bps_rate_limit": 0,
"conn_rate": 0,
"conn_rate_limit": 0,
"cum_conns": 67,
"cum_req": 67,
"cum_ssl_conns": 0,
"curr_conns": 0,
"curr_ssl_conns": 0,
"hard_max_conn": 4000,
"idle_pct": 100,
"max_conn": 4000,
"max_conn_rate": 5,
"max_pipes": 0,
"max_sess_rate": 5,
"max_sock": 8033,
"max_ssl_conns": 0,
"max_ssl_rate": 0,
"max_zlib_mem_usage": 0,
"mem_max_mb": 0,
"nb_proc": 1,
"pid": 53858,
"pipes_free": 0,
"pipes_used": 0,
"process_num": 1,
"run_queue": 2,
"sess_rate": 0,
"sess_rate_limit": 0,
"ssl_babckend_key_rate": 0,
"ssl_backend_max_key_rate": 0,
"ssl_cache_misses": 0,
"ssl_cached_lookups": 0,
"ssl_frontend_key_rate": 0,
"ssl_frontend_max_key_rate": 0,
"ssl_frontend_session_reuse_pct": 0,
"ssl_rate": 0,
"ssl_rate_limit": 0,
"tasks": 7,
"ulimit_n": 8033,
"uptime_sec": 13700,
"zlib_mem_usage": 0
}
},
stat 的返回数据示例如下:
"haproxy": {
"stat": {
"act": 1,
"bck": 0,
"bin": 0,
"bout": 0,
"check_duration": 0,
"check_status": "L4CON",
"chkdown": 1,
"chkfail": 1,
"cli_abrt": 0,
"ctime": 0,
"downtime": 13700,
"dresp": 0,
"econ": 0,
"eresp": 0,
"hanafail": 0,
"hrsp_1xx": 0,
"hrsp_2xx": 0,
"hrsp_3xx": 0,
"hrsp_4xx": 0,
"hrsp_5xx": 0,
"hrsp_other": 0,
"iid": 3,
"last_chk": "Connection refused",
"lastchg": 13700,
"lastsess": -1,
"lbtot": 0,
"pid": 1,
"qcur": 0,
"qmax": 0,
"qtime": 0,
"rate": 0,
"rate_max": 0,
"rtime": 0,
"scur": 0,
"sid": 1,
"smax": 0,
"srv_abrt": 0,
"status": "DOWN",
"stot": 0,
"svname": "log1",
"ttime": 0,
"weight": 1,
"wredis": 0,
"wretr": 0
}
}
对这些 stat 数据名称有疑惑的,可以查阅 http://www.haproxy.org/download/1.6/doc/management.txt 文档。
MongoDB
该模块支持 MongoDB 2.8 及以上版本。
"mongodb": {
"status": {
"asserts": {
"msg": 0,
"regular": 0,
"rollovers": 0,
"user": 0,
"warning": 0
},
"background_flushing": {
"average": {
"ms": 16
},
"flushes": 37,
"last": {
"ms": 18
},
"last_finished": "2016-09-06T07:32:58.228Z",
"total": {
"ms": 624
}
},
"connections": {
"available": 838859,
"current": 1,
"total_created": 10
},
"extra_info": {
"heap_usage": {
"bytes": 62895448
},
"page_faults": 71
},
"journaling": {
"commits": 1,
"commits_in_write_lock": 0,
"compression": 0,
"early_commits": 0,
"journaled": {
"mb": 0
},
"times": {
"commits": {
"ms": 0
},
"commits_in_write_lock": {
"ms": 0
},
"dt": {
"ms": 0
},
"prep_log_buffer": {
"ms": 0
},
"remap_private_view": {
"ms": 0
},
"write_to_data_files": {
"ms": 0
},
"write_to_journal": {
"ms": 0
}
},
"write_to_data_files": {
"mb": 0
}
},
"local_time": "2016-09-06T07:33:15.546Z",
"memory": {
"bits": 64,
"mapped": {
"mb": 80
},
"mapped_with_journal": {
"mb": 160
},
"resident": {
"mb": 57
},
"virtual": {
"mb": 356
}
},
"network": {
"in": {
"bytes": 2258
},
"out": {
"bytes": 93486
},
"requests": 39
},
"opcounters": {
"command": 40,
"delete": 0,
"getmore": 0,
"insert": 0,
"query": 1,
"update": 0
},
"opcounters_replicated": {
"command": 0,
"delete": 0,
"getmore": 0,
"insert": 0,
"query": 0,
"update": 0
},
"storage_engine": {
"name": "mmapv1"
},
"uptime": {
"ms": 45828938
},
"version": "3.0.12",
"write_backs_queued": false
}
}
MySQL
该模块支持 MySQL 5.7.0 及以上版本。
"mysql": {
"status": {
"aborted": {
"clients": 13,
"connects": 16
},
"binlog": {
"cache": {
"disk_use": 0,
"use": 0
}
},
"bytes": {
"received": 2100,
"sent": 92281
},
"connections": 33,
"created": {
"tmp": {
"disk_tables": 0,
"files": 6,
"tables": 0
}
},
"delayed": {
"errors": 0,
"insert_threads": 0,
"writes": 0
},
"flush_commands": 1,
"max_used_connections": 2,
"open": {
"files": 14,
"streams": 0,
"tables": 106
},
"opened_tables": 113
}
}
Nginx
该模块支持 Nginx 1.9 及以上版本。并要求安装有 mod_stub_status
模块。
"nginx": {
"stubstatus": {
"accepts": 22,
"active": 1,
"current": 10,
"dropped": 0,
"handled": 22,
"hostname": "nginx",
"reading": 0,
"requests": 10,
"waiting": 0,
"writing": 1
}
}
PostgreSQL
该模块支持 PostgreSQL 9 及以上版本。可以采集 activity,bgwriter 和 database 三类数据。
activity 示例数据如下:
"postgresql": {
"activity": {
"application_name": "",
"backend_start": "2016-09-06T07:33:18.323Z",
"client": {
"address": "172.17.0.14",
"hostname": "",
"port": 57436
},
"database": {
"name": "postgres",
"oid": 12379
},
"pid": 162,
"query": "SELECT * FROM pg_stat_activity",
"query_start": "2016-09-06T07:33:18.325Z",
"state": "active",
"state_change": "2016-09-06T07:33:18.325Z",
"transaction_start": "2016-09-06T07:33:18.325Z",
"user": {
"id": 10,
"name": "postgres"
},
"waiting": false
},
bgwriter 示例数据如下:
"bgwriter": {
"buffers": {
"allocated": 191,
"backend": 0,
"backend_fsync": 0,
"checkpoints": 0,
"clean": 0,
"clean_full": 0
},
"checkpoints": {
"requested": 0,
"scheduled": 7,
"times": {
"sync": {
"ms": 0
},
"write": {
"ms": 0
}
}
},
"stats_reset": "2016-09-05T18:49:53.575Z"
},
database 示例数据如下:
"database": {
"blocks": {
"hit": 0,
"read": 0,
"time": {
"read": {
"ms": 0
},
"write": {
"ms": 0
}
}
},
"conflicts": 0,
"deadlocks": 0,
"name": "template1",
"number_of_backends": 0,
"oid": 1,
"rows": {
"deleted": 0,
"fetched": 0,
"inserted": 0,
"returned": 0,
"updated": 0
},
"temporary": {
"bytes": 0,
"files": 0
},
"transactions": {
"commit": 0,
"rollback": 0
}
}
Redis
该模块支持 Redis 3 及以上版本。可以采集 info 和 keyspace 两类数据。
info 示例数据如下:
"redis": {
"info": {
"clients": {
"biggest_input_buf": 0,
"blocked": 0,
"connected": 2,
"longest_output_list": 0
},
"cluster": {
"enabled": false
},
"cpu": {
"used": {
"sys": 0.33,
"sys_children": 0,
"user": 0.39,
"user_children": 0
}
},
"memory": {
"allocator": "jemalloc-4.0.3",
"used": {
"lua": 37888,
"peak": 883992,
"rss": 4030464,
"value": 883032
}
},
"persistence": {
"aof": {
"bgrewrite": {
"last_status": "ok"
},
"enabled": false,
"rewrite": {
"current_time": {
"sec": -1
},
"in_progress": false,
"last_time": {
"sec": -1
},
"scheduled": false
},
"write": {
"last_status": "ok"
}
},
"loading": false,
"rdb": {
"bgsave": {
"current_time": {
"sec": -1
},
"in_progress": false,
"last_status": "ok",
"last_time": {
"sec": -1
}
},
"last_save": {
"changes_since": 2,
"time": 1475698251
}
}
},
"replication": {
"backlog": {
"active": 0,
"first_byte_offset": 0,
"histlen": 0,
"size": 1048576
},
"connected_slaves": 0,
"master_offset": 0,
"role": "master"
},
"server": {
"arch_bits": "64",
"build_id": "5575d747b4b3b12c",
"config_file": "",
"gcc_version": "4.9.2",
"git_dirty": "0",
"git_sha1": "00000000",
"hz": 10,
"lru_clock": 16080842,
"mode": "standalone",
"multiplexing_api": "epoll",
"os": "Linux 4.4.22-moby x86_64",
"process_id": 1,
"run_id": "d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6",
"tcp_port": 6379,
"uptime": 383,
"version": "3.2.4"
},
"stats": {
"commands_processed": 70,
"connections": {
"received": 17,
"rejected": 0
},
"instantaneous": {
"input_kbps": 0.07,
"ops_per_sec": 2,
"output_kbps": 0.07
},
"keys": {
"evicted": 0,
"expired": 0
},
"keyspace": {
"hits": 0,
"misses": 0
},
"latest_fork_usec": 0,
"migrate_cached_sockets": 0,
"net": {
"input": {
"bytes": 1949
},
"output": {
"bytes": 4956554
}
},
"pubsub": {
"channels": 0,
"patterns": 0
},
"sync": {
"full": 0,
"partial": {
"err": 0,
"ok": 0
}
}
}
},
keyspace 示例数据如下:
"keyspace": {
"avg_ttl": 0,
"expires": 0,
"id": "db0",
"keys": 1
}
}
System
System 就是过去的 TopBeat,可以采集 core、cpu、diskio、filesystem、fsstat、load、memory、network 和 process 指标。这都是运维人员最熟悉的部分,就不再单独贴指标名称和示例了。
模块自带有一个预定义仪表盘,示例如下:
Zookeeper
该模块支持 Zookeeper 3.4.0 及以上版本。采集的 mntr 数据示例如下:
"zookeeper": {
"mntr": {
"approximate_data_size": 27,
"ephemerals_count": 0,
"latency": {
"avg": 0,
"max": 0,
"min": 0
},
"num_alive_connections": 1,
"outstanding_requests": 0,
"packets": {
"received": 10,
"sent": 9
},
"server_state": "standalone",
"version": "3.4.8--1, built on 02/06/2016 03:18 GMT",
"watch_count": 0,
"znode_count": 4
}
}
docker 中的采集方式
metricbeat 的 system 数据大多采集自 /proc。而 docker 中,每个容器的实际数据是放在 /hostfs 而不是 /proc 里的。所以如果要用 metricbeat 采集容器数据,需要先挂载好对应路径:
$ sudo docker run
--volume=/proc:/hostfs/proc:ro
--volume=/sys/fs/cgroup:/hostfs/sys/fs/cgroup:ro
--volume=/:/hostfs:ro
--net=host
my/metricbeat:latest -system.hostfs=/hostfs
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论