Skip to content

Commit 9c25f21

Browse files
committed
fix: 优化 up 指标吐出,和部分代码逻辑
Signed-off-by: ruochen <wanxialianwei@gmail.com>
1 parent 26a2fc4 commit 9c25f21

1 file changed

Lines changed: 33 additions & 22 deletions

File tree

‎inputs/dmesg/dmesg.go‎

Lines changed: 33 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -47,29 +47,15 @@ type Msg struct {
4747
DeviceInfo map[string]string // Device info
4848
}
4949

50-
// 创建一个包含所有错误信息的切片,用于遍历
51-
// 这里手动将常量和对应的码绑定,确保顺序一致
52-
var errorList = map[string]int{
53-
OomError: 0,
54-
NfConntrackTableFull: 0,
55-
DropPacket: 0,
56-
WillResetAdapter: 0,
57-
MemoryError: 0,
58-
ResetSuccessfulForScsi: 0,
59-
CallTrace: 0,
60-
Segfault: 0,
61-
NicLinkDown: 0,
62-
Ext4FsError: 0,
63-
MediumError: 0,
64-
PackageTemperatureAboveThreshold: 0,
65-
}
66-
6750
type Instance struct {
6851
config.InstanceConfig
6952

7053
ExternalKeywords []string `toml:"external_keywords"`
7154

7255
conn syscall.RawConn
56+
file *os.File
57+
58+
errorList map[string]int
7359
}
7460

7561
func (ins *Instance) Init() error {
@@ -84,14 +70,32 @@ func (ins *Instance) Init() error {
8470

8571
ins.conn, err = f.SyscallConn()
8672
if err != nil {
73+
f.Close()
8774
log.Println("Error getting raw connection:", err)
8875
return err
8976
}
9077

78+
ins.errorList = map[string]int{
79+
OomError: 0,
80+
NfConntrackTableFull: 0,
81+
DropPacket: 0,
82+
WillResetAdapter: 0,
83+
MemoryError: 0,
84+
ResetSuccessfulForScsi: 0,
85+
CallTrace: 0,
86+
Segfault: 0,
87+
NicLinkDown: 0,
88+
Ext4FsError: 0,
89+
MediumError: 0,
90+
PackageTemperatureAboveThreshold: 0,
91+
}
92+
9193
for _, keyword := range ins.ExternalKeywords {
92-
errorList[keyword] = 0
94+
ins.errorList[keyword] = 0
9395
}
9496

97+
ins.file = f
98+
9599
return nil
96100
}
97101

@@ -154,25 +158,32 @@ func (ins *Instance) Gather(slist *types.SampleList) {
154158

155159
if err != nil {
156160
log.Println("Error reading from /dev/kmsg:", err)
157-
slist.PushFront(types.NewSample(inputName, "up", 1, nil))
161+
slist.PushFront(types.NewSample(inputName, "up", 0, nil))
158162
return
159163
}
160164

165+
slist.PushFront(types.NewSample(inputName, "up", 1, nil))
161166
for _, d := range msgs {
162-
for keyword := range errorList {
167+
for keyword := range ins.errorList {
163168
if strings.Contains(d.Text, keyword) {
164-
errorList[keyword] += 1
169+
ins.errorList[keyword]++
165170
}
166171
}
167172
}
168-
for keyword, count := range errorList {
173+
for keyword, count := range ins.errorList {
169174
slist.PushFront(types.NewSample(inputName, "hit_keyword", count, map[string]string{
170175
"keyword": keyword,
171176
}))
172177
}
173178

174179
}
175180

181+
func (ins *Instance) Cleanup() {
182+
if ins.file != nil {
183+
ins.file.Close()
184+
}
185+
}
186+
176187
func parseData(data []byte) *Msg {
177188
msg := Msg{}
178189

0 commit comments

Comments
 (0)