Add ceph_health metrics to ceph input (#5482)
This commit is contained in:
parent
135b1d1a8e
commit
5253cbfa01
|
@ -136,6 +136,11 @@ All admin measurements will have the following tags:
|
||||||
|
|
||||||
*Cluster Stats*
|
*Cluster Stats*
|
||||||
|
|
||||||
|
+ ceph_health
|
||||||
|
- fields:
|
||||||
|
- status
|
||||||
|
- overall_status
|
||||||
|
|
||||||
- ceph_osdmap
|
- ceph_osdmap
|
||||||
- fields:
|
- fields:
|
||||||
- epoch (float)
|
- epoch (float)
|
||||||
|
@ -209,6 +214,7 @@ ceph_pool_usage,name=telegraf kb_used=0,bytes_used=0,objects=0 15506589110000000
|
||||||
ceph_pgmap_state,state=undersized+peered count=30 1550658910000000000
|
ceph_pgmap_state,state=undersized+peered count=30 1550658910000000000
|
||||||
ceph_pgmap bytes_total=10733223936,read_op_per_sec=0,write_op_per_sec=0,num_pgs=30,data_bytes=0,bytes_avail=9654697984,read_bytes_sec=0,write_bytes_sec=0,version=0,bytes_used=1078525952 1550658910000000000
|
ceph_pgmap bytes_total=10733223936,read_op_per_sec=0,write_op_per_sec=0,num_pgs=30,data_bytes=0,bytes_avail=9654697984,read_bytes_sec=0,write_bytes_sec=0,version=0,bytes_used=1078525952 1550658910000000000
|
||||||
ceph_osdmap num_up_osds=1,num_in_osds=1,full=false,nearfull=false,num_remapped_pgs=0,epoch=34,num_osds=1 1550658910000000000
|
ceph_osdmap num_up_osds=1,num_in_osds=1,full=false,nearfull=false,num_remapped_pgs=0,epoch=34,num_osds=1 1550658910000000000
|
||||||
|
ceph_health status="HEALTH_WARN",overall_status="HEALTH_WARN" 1550658910000000000
|
||||||
```
|
```
|
||||||
|
|
||||||
*Admin Socket Stats*
|
*Admin Socket Stats*
|
||||||
|
|
|
@ -319,6 +319,10 @@ func (c *Ceph) exec(command string) (string, error) {
|
||||||
|
|
||||||
// CephStatus is used to unmarshal "ceph -s" output
|
// CephStatus is used to unmarshal "ceph -s" output
|
||||||
type CephStatus struct {
|
type CephStatus struct {
|
||||||
|
Health struct {
|
||||||
|
Status string `json:"status"`
|
||||||
|
OverallStatus string `json:"overall_status"`
|
||||||
|
} `json:"health"`
|
||||||
OSDMap struct {
|
OSDMap struct {
|
||||||
OSDMap struct {
|
OSDMap struct {
|
||||||
Epoch float64 `json:"epoch"`
|
Epoch float64 `json:"epoch"`
|
||||||
|
@ -357,6 +361,7 @@ func decodeStatus(acc telegraf.Accumulator, input string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
decoders := []func(telegraf.Accumulator, *CephStatus) error{
|
decoders := []func(telegraf.Accumulator, *CephStatus) error{
|
||||||
|
decodeStatusHealth,
|
||||||
decodeStatusOsdmap,
|
decodeStatusOsdmap,
|
||||||
decodeStatusPgmap,
|
decodeStatusPgmap,
|
||||||
decodeStatusPgmapState,
|
decodeStatusPgmapState,
|
||||||
|
@ -371,6 +376,16 @@ func decodeStatus(acc telegraf.Accumulator, input string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// decodeStatusHealth decodes the health portion of the output of 'ceph status'
|
||||||
|
func decodeStatusHealth(acc telegraf.Accumulator, data *CephStatus) error {
|
||||||
|
fields := map[string]interface{}{
|
||||||
|
"status": data.Health.Status,
|
||||||
|
"overall_status": data.Health.OverallStatus,
|
||||||
|
}
|
||||||
|
acc.AddFields("ceph_health", fields, map[string]string{})
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// decodeStatusOsdmap decodes the OSD map portion of the output of 'ceph -s'
|
// decodeStatusOsdmap decodes the OSD map portion of the output of 'ceph -s'
|
||||||
func decodeStatusOsdmap(acc telegraf.Accumulator, data *CephStatus) error {
|
func decodeStatusOsdmap(acc telegraf.Accumulator, data *CephStatus) error {
|
||||||
fields := map[string]interface{}{
|
fields := map[string]interface{}{
|
||||||
|
|
Loading…
Reference in New Issue