1
0
Fork 0

Adding upstream version 1.34.4.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-05-24 07:26:29 +02:00
parent e393c3af3f
commit 4978089aab
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
4963 changed files with 677545 additions and 0 deletions

View file

@ -0,0 +1,115 @@
package ldap
import (
"strconv"
"strings"
"time"
"github.com/go-ldap/ldap/v3"
"github.com/influxdata/telegraf"
"github.com/influxdata/telegraf/metric"
)
// Empty mappings are identity mappings
var attrMap389ds = map[string]string{
"addentryops": "add_operations",
"anonymousbinds": "anonymous_binds",
"bindsecurityerrors": "bind_security_errors",
"bytesrecv": "bytes_received",
"bytessent": "bytes_sent",
"cacheentries": "cache_entries",
"cachehits": "cache_hits",
"chainings": "",
"compareops": "compare_operations",
"connections": "",
"connectionsinmaxthreads": "connections_in_max_threads",
"connectionsmaxthreadscount": "connections_max_threads",
"copyentries": "copy_entries",
"currentconnections": "current_connections",
"currentconnectionsatmaxthreads": "current_connections_at_max_threads",
"dtablesize": "",
"entriesreturned": "entries_returned",
"entriessent": "entries_sent",
"errors": "",
"inops": "in_operations",
"listops": "list_operations",
"removeentryops": "delete_operations",
"masterentries": "master_entries",
"maxthreadsperconnhits": "maxthreads_per_conn_hits",
"modifyentryops": "modify_operations",
"modifyrdnops": "modrdn_operations",
"nbackends": "backends",
"onelevelsearchops": "onelevel_search_operations",
"opscompleted": "operations_completed",
"opsinitiated": "operations_initiated",
"readops": "read_operations",
"readwaiters": "read_waiters",
"referrals": "referrals",
"referralsreturned": "referrals_returned",
"searchops": "search_operations",
"securityerrors": "security_errors",
"simpleauthbinds": "simpleauth_binds",
"slavehits": "slave_hits",
"strongauthbinds": "strongauth_binds",
"threads": "",
"totalconnections": "total_connections",
"unauthbinds": "unauth_binds",
"wholesubtreesearchops": "wholesubtree_search_operations",
}
func (l *LDAP) new389dsConfig() []request {
attributes := make([]string, 0, len(attrMap389ds))
for k := range attrMap389ds {
attributes = append(attributes, k)
}
req := ldap.NewSearchRequest(
"cn=Monitor",
ldap.ScopeWholeSubtree,
ldap.NeverDerefAliases,
0,
0,
false,
"(objectClass=*)",
attributes,
nil,
)
return []request{{req, l.convert389ds}}
}
func (l *LDAP) convert389ds(result *ldap.SearchResult, ts time.Time) []telegraf.Metric {
tags := map[string]string{
"server": l.host,
"port": l.port,
}
fields := make(map[string]interface{})
for _, entry := range result.Entries {
for _, attr := range entry.Attributes {
if len(attr.Values[0]) == 0 {
continue
}
// Map the attribute-name to the field-name
name := attrMap389ds[attr.Name]
if name == "" {
name = attr.Name
}
// Reverse the name if requested
if l.ReverseFieldNames {
parts := strings.Split(name, "_")
for i, j := 0, len(parts)-1; i < j; i, j = i+1, j-1 {
parts[i], parts[j] = parts[j], parts[i]
}
name = strings.Join(parts, "_")
}
// Convert the number
if v, err := strconv.ParseInt(attr.Values[0], 10, 64); err == nil {
fields[name] = v
}
}
}
m := metric.New("389ds", tags, fields, ts)
return []telegraf.Metric{m}
}